package busterminal.command.stoppingpoint;

import busterminal.command.AbstractCommand;
import busterminal.exception.BusinessException;
import busterminal.persistence.StoppingPointDAO;
import busterminal.services.ServiceLocator;
import java.util.Arrays;
import java.util.List;

/**
 * Команда для поиска остановочного пункта по названию
 */
public class FindStoppingPointByNameCommand extends AbstractCommand {

    /**
     * Имя параметра "Название остановочного пункта"
     */
    private final static String PARAM_STOPPING_POINT_NAME = "stopping point name";

    /**
     * Конструктор по умолчанию
     */
    public FindStoppingPointByNameCommand() {
        super("Find stopping point by name");
    }

    /**
     * Получить список имён параметров
     * @return список имён параметров
     */
    @Override
    public List<String> getParametersNames() {
        return Arrays.asList(PARAM_STOPPING_POINT_NAME);
    }

    /**
     * Выполнить команду
     */
    @Override
    public void execute() {
        StoppingPointDAO stoppingPointDAO = ServiceLocator.getService(StoppingPointDAO.class);

        if (parameters.get(PARAM_STOPPING_POINT_NAME).trim().isEmpty()) {
            throw new BusinessException("You should define stopping point name");
        }
        System.out.println(stoppingPointDAO.findByName(parameters.get(PARAM_STOPPING_POINT_NAME).trim()));
    }
}
